locale = $this->get_admin_locale(); if ( 'en_US' === $this->locale ) { return; } $this->init( $args ); if ( ! $this->hide_promo() ) { add_action( $this->hook, array( $this, 'promo' ) ); } } /** * Returns the locale used in the admin. * * WordPress 4.7 introduced the ability for users to specify an Admin language * different from the language used on the front end. This checks if the feature * is available and returns the user's language, with a fallback to the site's language. * Can be removed when support for WordPress 4.6 will be dropped, in favor * of WordPress get_user_locale() that already fallbacks to the site’s locale. * * @returns string The locale. */ private function get_admin_locale() { if ( function_exists( 'get_user_locale' ) ) { return get_user_locale(); } return get_locale(); } /** * This is where you decide where to display the messages and where you set the plugin specific variables. * * @access private * * @param array $args */ private function init( $args ) { foreach ( $args as $key => $arg ) { $this->$key = $arg; } } /** * Check whether the promo should be hidden or not * * @access private * * @return bool */ private function hide_promo() { $hide_promo = get_transient( 'yoast_i18n_' . $this->project_slug . '_promo_hide' ); if ( ! $hide_promo ) { if ( filter_input( INPUT_GET, 'remove_i18n_promo', FILTER_VALIDATE_INT ) === 1 ) { // No expiration time, so this would normally not expire, but it wouldn't be copied to other sites etc. set_transient( 'yoast_i18n_' . $this->project_slug . '_promo_hide', true ); $hide_promo = true; } } return $hide_promo; } /** * Generates a promo message * * @access private * * @return bool|string $message */ private function promo_message() { $message = false; if ( $this->translation_exists && $this->translation_loaded && $this->percent_translated < 90 ) { $message = __( 'As you can see, there is a translation of this plugin in %1$s. This translation is currently %3$d%% complete. We need your help to make it complete and to fix any errors. Please register at %4$s to help complete the translation to %1$s!', $this->textdomain ); } else if ( ! $this->translation_loaded && $this->translation_exists ) { $message = __( 'You\'re using WordPress in %1$s. While %2$s has been translated to %1$s for %3$d%%, it\'s not been shipped with the plugin yet. You can help! Register at %4$s to help complete the translation to %1$s!', $this->textdomain ); } else if ( ! $this->translation_exists ) { $message = __( 'You\'re using WordPress in a language we don\'t support yet. We\'d love for %2$s to be translated in that language too, but unfortunately, it isn\'t right now. You can change that! Register at %4$s to help translate it!', $this->textdomain ); } $registration_link = sprintf( '%2$s', esc_url( $this->register_url ), esc_html( $this->glotpress_name ) ); $message = sprintf( $message, esc_html( $this->locale_name ), esc_html( $this->plugin_name ), $this->percent_translated, $registration_link ); return $message; } /** * Outputs a promo box */ public function promo() { $this->translation_details(); $message = $this->promo_message(); if ( $message ) { echo '
' . $message . '
'; echo ''; echo '