Exemple #1
0
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;
}
Exemple #3
0
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;
}