/** * * Return list of contexts for string translation * * @return mixed */ function wpml_ctt_st_contexts() { return icl_st_get_contexts(false); }
if (preg_match("#" . ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR . "-(.+)#", $status_filter_text, $matches)) { $status_filter = ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR; $status_filter_lang = $matches[1]; } else { $status_filter = filter_input(INPUT_GET, 'status', FILTER_SANITIZE_NUMBER_INT); } $status_filter = $status_filter !== null ? (int) $status_filter : null; $context_filter = filter_input(INPUT_GET, 'context'); $search_filter = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $exact_match = filter_input(INPUT_GET, 'em', FILTER_VALIDATE_BOOLEAN); $icl_string_translations = icl_get_string_translations(); if (!empty($icl_string_translations)) { $icl_strings_in_page = icl_get_strings_tracked_in_pages($icl_string_translations); } $active_languages = $sitepress->get_active_languages(); $icl_contexts = icl_st_get_contexts($status_filter); $icl_st_translation_enabled = $sitepress->icl_account_configured() && $sitepress->get_icl_translation_enabled(); $available_contexts = array(); if (!empty($icl_contexts)) { foreach ($icl_contexts as $c) { if ($c) { $available_contexts[] = $c->context; } } } if (!empty($sitepress_settings['st']['theme_localization_domains']) && is_array($sitepress_settings['st']['theme_localization_domains'])) { foreach ($sitepress_settings['st']['theme_localization_domains'] as $c) { if ($c) { $available_contexts[] = 'theme ' . $c; } }
public function get_links_for_menu_strings_translation() { $menu_links = array(); $wpml_st_folder = $this->sitepress->get_wp_api()->constant('WPML_ST_FOLDER'); if ($wpml_st_folder) { $wpml_st_contexts = icl_st_get_contexts(false); $wpml_st_contexts = wp_list_pluck($wpml_st_contexts, 'context'); $menu_names = $this->get_menu_names(); foreach ($menu_names as $k => $menu_name) { if (!in_array($menu_name . ' menu', $wpml_st_contexts, true)) { unset($menu_names[$k]); } } if (!empty($menu_names)) { $menu_url_base = add_query_arg('page', urlencode($wpml_st_folder . '/menu/string-translation.php'), 'admin.php'); foreach ($menu_names as $menu_name) { $menu_url = add_query_arg('context', urlencode($menu_name . ' menu'), $menu_url_base); $menu_links[$menu_name] = $menu_url; } } } $response = array(); if ($menu_links) { $response = array('label' => esc_html__('Translate menu strings and URLs for:', 'sitepress'), 'items' => $menu_links); } return $response; }
$status_filter_text = $status_filter; $status_filter_lang = false; if (preg_match("#" . ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR . "-(.+)#", $status_filter_text, $matches)) { $status_filter = ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR; $status_filter_lang = $matches[1]; } else { $status_filter = filter_input(INPUT_GET, 'status', FILTER_SANITIZE_NUMBER_INT, FILTER_NULL_ON_FAILURE); } //$status_filter = $status_filter !== false ? (int) $status_filter : null; $context_filter = filter_input(INPUT_GET, 'context', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $search_filter = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $exact_match = filter_input(INPUT_GET, 'em', FILTER_VALIDATE_BOOLEAN); $icl_string_translations = icl_get_string_translations(); $active_languages = $sitepress->get_active_languages(); $icl_contexts = icl_st_get_contexts($status_filter); $unfiltered_context_counts = $status_filter !== false ? icl_st_get_contexts(false) : $icl_contexts; function context_array($contexts) { $count_array = array(); $contexts = $contexts ? array_filter($contexts) : array(); foreach ($contexts as $c) { $count_array[$c->context] = $c->c; } return $count_array; } $available_contexts = array_keys(context_array($icl_contexts)); $unfiltered_contexts = context_array($unfiltered_context_counts); function _icl_string_translation_rtl_div($language) { if (in_array($language, array('ar', 'he', 'fa'))) { echo ' dir="rtl" style="text-align:right;direction:rtl;"';
/** * * Popup for inserting a translatable string * * Since 1.4 * */ function wpv_ajax_wpv_translatable_string_popup() { if (wp_verify_nonce($_GET['_wpnonce'], 'wpv_editor_callback')) { ?> <div class="wpv-dialog js-insert-translatable-string-dialog"> <div class="wpv-dialog-header"> <h2><?php echo __('Insert translatable string', 'wpv-views'); ?> </h2> </div> <div class="wpv-dialog-content"> <p> <label for="wpv-translatable-string-value"><?php _e('String to translate', 'wpv-views'); ?> </label> <input id="wpv-translatable-string-value" type="text" placeholder="" class="js-wpv-translatable-string-value" /> </p> <p> <?php $icl_contexts = icl_st_get_contexts(false); if (count($icl_contexts) == 1) { foreach ($icl_contexts as $v) { $context_value = $v->context; } } else { $context_value = ''; } ?> <label for="wpv-translatable-string-context"><?php _e('WPML context', 'wpv-views'); ?> </label> <input id="wpv-translatable-string-context" type="text" placeholder="" value="<?php echo $context_value; ?> " class="js-wpv-translatable-string-context" /> </p> </div> <div class="wpv-dialog-footer"> <button class="button-secondary js-dialog-close"><?php _e('Cancel', 'wpv-views'); ?> </button> <button class="button-primary js-wpv-insert-translatable-string-shortcode" onclick="wpv_insert_translatable_string_shortcode()"><?php echo __('Insert shortcode', 'wpv-views'); ?> </button> </div> <script type="text/javascript"> //<![CDATA[ function wpv_insert_translatable_string_shortcode() { jQuery('.js-wpv-insert-translatable-string-shortcode').removeClass('button-primary').addClass('button-secondary').prop('disabled', true); var spinnerContainer = jQuery('<div class="spinner ajax-loader">').insertAfter(jQuery('.js-wpv-insert-translatable-string-shortcode')).show(), tsValue = jQuery('.js-wpv-translatable-string-value').val(), tsContext = jQuery('.js-wpv-translatable-string-context').val(); window.icl_editor.insert('[wpml-string context="' + tsContext + '"]' + tsValue + '[/wpml-string]'); jQuery.colorbox.close(); } jQuery('.js-wpv-translatable-string-context').suggest(ajaxurl + '?action=wpv_suggest_wpml_contexts', { onSelect: function() { } }); //]]> </script> </div> <!-- .js-insert-translatable-string-dialog --> <?php } die; }