PATH:
var
/
www
/
clients
/
client1
/
web1
/
web
/
wp-content
/
sitepress-multilingual-cms
/
classes
/
utilities
<?php class WPML_Languages_Notices { const NOTICE_ID_MISSING_MENU_ITEMS = 'wpml-missing-menu-items'; const NOTICE_GROUP = 'wpml-core'; const NOTICE_ID_MISSING_DOWNLOADED_LANGUAGES = 'wpml-missing-downloaded-languages'; /** @var WPML_Notices */ private $admin_notices; private $translations = array(); /** * WPML_Languages_Notices constructor. * * @param WPML_Notices $admin_notices */ public function __construct( WPML_Notices $admin_notices ) { $this->admin_notices = $admin_notices; } function maybe_create_notice_missing_menu_items( $languages_count ) { if ( 1 === $languages_count ) { $text = __( 'You need to configure at least one more language in order to access "Theme and plugins localization" and "Media translation".', 'sitepress' ); $notice = new WPML_Notice( self::NOTICE_ID_MISSING_MENU_ITEMS, $text, self::NOTICE_GROUP ); $notice->set_css_class_types( 'info' ); $notice->set_dismissible( true ); $this->admin_notices->add_notice( $notice ); } else { $this->admin_notices->remove_notice( self::NOTICE_GROUP, self::NOTICE_ID_MISSING_MENU_ITEMS ); } } public function missing_languages( $not_found_languages ) { $list_items = array(); if ( $not_found_languages ) { $list_item_pattern = __( '%1$s (current locale: %2$s) - suggested locale(s): %3$s', 'sitepress' ); foreach ( (array) $not_found_languages as $not_found_language ) { $suggested_codes = $this->get_suggestions( $not_found_language ); if ( $suggested_codes ) { $suggestions = '<strong>' . implode( '</strong>, <strong>', $suggested_codes ) . '</strong>'; $current = $not_found_language['code']; if ( $not_found_language['default_locale'] ) { $current = $not_found_language['default_locale']; } $list_items[] = sprintf( $list_item_pattern, $not_found_language['display_name'], $current, $suggestions ); } } } if ( $list_items ) { $text = ''; $text .= '<p>'; $text .= __( 'WordPress cannot automatically download translations for the following languages:', 'sitepress' ); $text .= '</p>'; $text .= '<ul>'; $text .= '<li>'; $text .= implode( '</li><li>', $list_items ); $text .= '</li>'; $text .= '</ul>'; $languages_edit_url = admin_url( 'admin.php?page=' . WPML_PLUGIN_FOLDER . '/menu/languages.php&trop=1' ); $languages_edit_link = '<a href="' . $languages_edit_url . '">'; $languages_edit_link .= __( 'Edit Languages', 'sitepress' ); $languages_edit_link .= '</a>'; $text .= '<p>'; $text .= sprintf( __( 'To fix, open "%s" and set the "default locale" values as shown above.', 'sitepress' ), $languages_edit_link ); $text .= '</p>'; $notice = new WPML_Notice( self::NOTICE_ID_MISSING_DOWNLOADED_LANGUAGES, $text, self::NOTICE_GROUP ); $notice->set_css_class_types( 'warning' ); $notice->add_display_callback( array( $this, 'is_not_languages_edit_page' ) ); $notice->set_dismissible( true ); $this->admin_notices->add_notice( $notice, true ); } else { $this->admin_notices->remove_notice( self::NOTICE_GROUP, self::NOTICE_ID_MISSING_DOWNLOADED_LANGUAGES ); } } public function is_not_languages_edit_page() { $result = isset( $_GET['page'], $_GET['trop'] ) && WPML_PLUGIN_FOLDER . '/menu/languages.php' === $_GET['page'] && 1 === (int) $_GET['trop']; return ! $result; } private function get_suggestions( array $language ) { $suggestions = array(); if ( function_exists( 'translations_api' ) ) { if ( ! $this->translations ) { $api = translations_api( 'core', array( 'version' => $GLOBALS['wp_version'] ) ); if ( ! is_wp_error( $api ) ) { $this->translations = $api['translations']; } } } if ( $this->translations ) { foreach ( $this->translations as $translation ) { $default_locale = $this->get_matching_language( $language, $translation ); if ( $default_locale ) { $suggestions[] = $default_locale; } } } return $suggestions; } /** * @param string $language_attribute * @param array $language * @param array $translation * * @return string|null */ private function find_matching_attribute( $language_attribute, array $language, array $translation ) { if ( $translation && $language[ $language_attribute ] ) { $attribute_value = $language[ $language_attribute ]; $attribute_value = str_replace( '-', '_', $attribute_value ); $attribute_value = strtolower( $attribute_value ); $iso_1 = $iso_2 = ''; if ( array_key_exists( 1, $translation['iso'] ) ) { $iso_1 = strtolower( $translation['iso'][1] ); } if ( array_key_exists( 2, $translation['iso'] ) ) { $iso_2 = strtolower( $translation['iso'][2] ); } if ( $iso_1 === $attribute_value ) { return $translation['language']; } if ( $iso_2 === $attribute_value ) { return $translation['language']; } if ( $iso_1 . '_' . $iso_2 === $attribute_value ) { return $translation['language']; } if ( $iso_2 . '_' . $iso_1 === $attribute_value ) { return $translation['language']; } } return null; } /** * @param array $language * @param array $translation * * @return null|string */ private function get_matching_language( array $language, array $translation ) { $default_locale = $this->find_matching_attribute( 'default_locale', $language, $translation ); if ( ! $default_locale ) { $default_locale = $this->find_matching_attribute( 'tag', $language, $translation ); if ( ! $default_locale ) { $default_locale = $this->find_matching_attribute( 'code', $language, $translation ); } } return $default_locale; } }
[-] class-wpml-wp-cache-factory.php
[edit]
[-] class-wpml-inactive-content.php
[edit]
[-] class-wpml-slash-management.php
[edit]
[-] class-wpml-transient.php
[edit]
[-] class-wpml-ajax.php
[edit]
[-] class-wpml-locale.php
[edit]
[-] class-wpml-string-functions.php
[edit]
[-] class-wpml-deactivate-old-media-factory.php
[edit]
[-] class-wpml-global-ajax.php
[edit]
[+]
admin
[-] AutoAdjustIdsFactory.php
[edit]
[-] wpml-queried-object.php
[edit]
[-] class-wpml-wp-query-api.php
[edit]
[-] class-debug-backtrace.php
[edit]
[-] class-wpml-temporary-switch-admin-language.php
[edit]
[-] class-wpml-flags-factory.php
[edit]
[-] class-wpml-deactivate-old-media.php
[edit]
[-] AutoAdjustIds.php
[edit]
[-] Resources.php
[edit]
[-] class-wpml-encoding.php
[edit]
[-] class-wpml-temporary-switch-language.php
[edit]
[-] class-wpml-flags.php
[edit]
[+]
..
[-] Pager.php
[edit]
[-] class-wpml-wp-post.php
[edit]
[-] class-wpml-cache-factory.php
[edit]
[-] wpml-uuid.php
[edit]
[-] class-wpml-encoding-validation.php
[edit]
[-] wpml-languages-notices.php
[edit]
[-] class-wpml-non-persistent-cache.php
[edit]
[+]
user
[-] class-wpml-wp-cache.php
[edit]
[+]
lock
[-] class-wpml-simple-language-selector.php
[edit]
[-] class-wpml-debug-backtrace.php
[edit]
[-] class-wpml-wp-taxonomy-query.php
[edit]
[-] class-wpml-wp-cache-item.php
[edit]
[-] class-wpml-translate-link-targets.php
[edit]