function icl_register_string($context, $name, $value, $allow_empty_value = false) { global $wpdb, $sitepress, $sitepress_settings, $ICL_Pro_Translation; // if the default language is not set up return without doing anything if (!isset($sitepress_settings['existing_content_language_verified']) || !$sitepress_settings['existing_content_language_verified']) { return; } // Check if cached (so exists) $cached = icl_t_cache_lookup($context, $name); if ($cached && isset($cached['original']) && $cached['original'] == $value) { return; } $language = $sitepress->get_default_language(); $res = $wpdb->get_row("SELECT id, value, status, language FROM {$wpdb->prefix}icl_strings WHERE context='" . $wpdb->escape($context) . "' AND name='" . $wpdb->escape($name) . "'"); if ($res) { $string_id = $res->id; $update_string = array(); if ($value != $res->value) { $update_string['value'] = $value; } if ($language != $res->language) { $update_string['language'] = $language; } if (!empty($update_string)) { $wpdb->update($wpdb->prefix . 'icl_strings', $update_string, array('id' => $string_id)); $wpdb->update($wpdb->prefix . 'icl_string_translations', array('status' => ICL_STRING_TRANSLATION_NEEDS_UPDATE), array('string_id' => $string_id)); icl_update_string_status($string_id); } } else { if (!empty($value) && is_scalar($value) && trim($value) || $allow_empty_value) { $string = array('language' => $language, 'context' => $context, 'name' => $name, 'value' => $value, 'status' => ICL_STRING_TRANSLATION_NOT_TRANSLATED); $wpdb->insert($wpdb->prefix . 'icl_strings', $string); $string_id = $wpdb->insert_id; } else { $string_id = 0; } } global $WPML_Sticky_Links; if (!empty($WPML_Sticky_Links) && $WPML_Sticky_Links->settings['sticky_links_strings']) { require_once ICL_PLUGIN_PATH . '/inc/translation-management/pro-translation.class.php'; ICL_Pro_Translation::_content_make_links_sticky($string_id, 'string', false); } return $string_id; }
/** * @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 $wpdb, $sitepress, $sitepress_settings; // 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 ($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 = $result !== false && ($result['translated'] && $result['original'] != $original_value || !$result['translated'] && $result['value'] != $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; } } } return $ret_val; }
function icl_t($context, $name, $original_value = false, &$has_translation = null) { global $wpdb, $sitepress, $sitepress_settings; // 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 = $sitepress_settings['st']['strings_language'] ? $sitepress_settings['st']['strings_language'] : $sitepress->get_default_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); if ($result === false || !$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; } } } return $ret_val; }