/** * @param string $context * @param string $name * @param string|bool $original_value * @param bool|null $has_translation * @param bool $disable_auto_register * * @return bool|string */ function icl_t($context, $name, $original_value = false, &$has_translation = null, $disable_auto_register = false, $language_code = null) { global $sitepress, $sitepress_settings; // we need this to divide static $results cache by blogs in multiblog $blog_id = 0; if (isset($GLOBALS['blog_id'])) { $blog_id = $GLOBALS['blog_id']; } // if the default language is not set up return if (!isset($sitepress_settings['existing_content_language_verified'])) { if (isset($has_translation)) { $has_translation = false; } return $original_value !== false ? $original_value : $name; } $current_language = $language_code == null ? get_current_string_language($name) : $language_code; $default_language = !empty($sitepress_settings['st']['strings_language']) ? $sitepress_settings['st']['strings_language'] : $sitepress->get_default_language(); $cache_key_args = array($blog_id, $current_language, $default_language, $context, $name, $original_value); $cache_key = md5(json_encode($cache_key_args)); $cache_group = '_icl_t'; $found = false; $to_return = wp_cache_get($cache_key, $cache_group, false, $found); if ($found) { if ($to_return == $original_value) { $has_translation = false; } else { $has_translation = true; } return $to_return; } if ($current_language == $default_language && $original_value) { $ret_val = $original_value; if (isset($has_translation)) { $has_translation = false; } } else { $result = icl_t_cache_lookup($context, $name, $language_code); $is_string_change = _icl_is_string_change($result, $original_value); if (($result === false || $is_string_change) && !is_admin() && !$disable_auto_register && $context != 'Widgets') { static $string_registrations_per_request = 0; if ($string_registrations_per_request < ICL_STRING_TRANSLATION_AUTO_REGISTER_THRESHOLD) { // See if we should auto register the strings. if (isset($sitepress_settings['st']['icl_st_auto_reg'])) { $auto_reg = $sitepress_settings['st']['icl_st_auto_reg']; } else { $auto_reg = 'disable'; } if ($auto_reg == 'auto-always' || $auto_reg == 'auto-admin' && current_user_can('manage_options')) { icl_register_string($context, $name, $original_value); $string_registrations_per_request++; } } } if ($result === false || is_array($result) && (!isset($result['value']) || isset($result['translated']) && !$result['translated'] && $original_value)) { $ret_val = $original_value; if (isset($has_translation)) { $has_translation = false; } } else { $ret_val = $result['value']; if (isset($has_translation)) { $has_translation = true; } } } wp_cache_set($cache_key, $ret_val, $cache_group); return $ret_val; }
function icl_t($context, $name, $original_value = false, &$has_translation = null, $dont_auto_register = false) { global $sitepress, $sitepress_settings; static $results = null; // we need this to devide static $results cache by blogs in multiblog $blog_id = 0; if (isset($GLOBALS['blog_id'])) { $blog_id = $GLOBALS['blog_id']; } // if the default language is not set up return if (!isset($sitepress_settings['existing_content_language_verified'])) { if (isset($has_translation)) { $has_translation = false; } return $original_value !== false ? $original_value : $name; } if (defined('DOING_AJAX')) { $current_language = $sitepress->get_language_cookie(); } elseif (is_admin()) { $current_language = $sitepress->get_admin_language(); } else { $current_language = $sitepress->get_current_language(); } $default_language = !empty($sitepress_settings['st']['strings_language']) ? $sitepress_settings['st']['strings_language'] : $sitepress->get_default_language(); if (isset($results[$blog_id][$context][$name][$current_language])) { if ($results[$blog_id][$context][$name][$current_language] != $original_value) { $has_translation = true; } else { $has_translation = false; } return $results[$blog_id][$context][$name][$current_language]; } if ($current_language == $default_language && $original_value) { $ret_val = $original_value; if (isset($has_translation)) { $has_translation = false; } } else { $result = icl_t_cache_lookup($context, $name); $is_string_change = _icl_is_string_change($result, $original_value); if (($result === false || $is_string_change) && !is_admin() && !$dont_auto_register && $context != 'Widgets') { static $string_registrations_per_request = 0; if ($string_registrations_per_request < ICL_STRING_TRANSLATION_AUTO_REGISTER_THRESHOLD) { // See if we should auto register the strings. if (isset($sitepress_settings['st']['icl_st_auto_reg'])) { $auto_reg = $sitepress_settings['st']['icl_st_auto_reg']; } else { $auto_reg = 'disable'; } if ($auto_reg == 'auto-always' || $auto_reg == 'auto-admin' && current_user_can('manage_options')) { icl_register_string($context, $name, $original_value); $string_registrations_per_request++; } } } if ($result === false || is_array($result) && !$result['translated'] && $original_value) { $ret_val = $original_value; if (isset($has_translation)) { $has_translation = false; } } else { $ret_val = $result['value']; if (isset($has_translation)) { $has_translation = true; } } } $results[$blog_id][$context][$name][$current_language] = $ret_val; return $ret_val; }