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; } } /** * Gets and sets the native language. * * @since 2.3.12.1 */ function set_native_language() { if ( file_exists( ABSPATH . 'wp-admin/includes/translation-install.php' ) ) { require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); } else { return; } if ( function_exists( 'wp_get_available_translations' ) ) { $translations = wp_get_available_translations(); $this->native_name = $translations[ $this->current_locale ]['native_name']; } } /** * * @since 2.3.5 * @since 2.3.6 Return FALSE on WP_Error object in get_locale_data(). * @since 2.3.12.1 set_native_language() * */ 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(); $this->set_native_language(); } } endif; // End class_exists check.