/** * @param int[] $strings * @param string $lang * * @return array */ public function change_language_of_strings($strings, $lang) { $package_translation = new WPML_Package_Helper(); $response = $package_translation->change_language_of_strings($strings, $lang); if ($response['success']) { $strings_in = implode(',', $strings); $update_query = "UPDATE {$this->wpdb->prefix}icl_strings SET language=%s WHERE id IN ({$strings_in})"; $update_prepare = $this->wpdb->prepare($update_query, $lang); $this->wpdb->query($update_prepare); $response['success'] = true; foreach ($strings as $string) { icl_update_string_status($string); } } return $response; }
private function migrate_old_translated_values($form_id) { global $wpdb; $st_context = $this->tm_api->get_st_context($form_id); $form_strings = array_keys($this->tm_api->get_form_strings($form_id)); foreach ($form_strings as &$string_name) { $string_name = "{$form_id}_" . $string_name; } $s_name_in = wpml_prepare_in($form_strings); $id_s_needing_update = $wpdb->get_results($wpdb->prepare("SELECT st.id AS id, cs.id AS right_id\n FROM {$wpdb->prefix}icl_strings s\n JOIN {$wpdb->prefix}icl_strings cs\n ON CONCAT(%s,cs.name) = s.name\n JOIN {$wpdb->prefix}icl_string_translations st\n ON s.id = st.string_id\n LEFT JOIN {$wpdb->prefix}icl_string_translations cst\n ON cs.id = cst.string_id AND st.language = cst.language\n WHERE s.context = 'gravity_form'\n AND cs.context = %s\n AND cst.language IS NULL\n AND s.name IN ({$s_name_in})", $form_id . '_', $st_context)); foreach ($id_s_needing_update as $id_data) { $wpdb->update($wpdb->prefix . 'icl_string_translations', array('string_id' => $id_data->right_id), array('id' => $id_data->id)); icl_update_string_status($id_data->right_id); icl_update_string_status($id_data->id); } }
$post_type_obj = get_post_type_object($type); $slug = $post_type_obj->rewrite['slug']; $string_id = $wpdb->get_var($wpdb->prepare("SELECT id FROM {$wpdb->prefix}icl_strings WHERE name = %s AND value = %s ", 'URL slug: ' . $slug, $slug)); if (empty($string_id)) { $string_id = icl_register_string('WordPress', 'URL slug: ' . $slug, $slug); } if ($string_id) { foreach ($this->get_active_languages() as $lang) { $string_translation_settings = $this->get_setting('st'); if ($lang['code'] != $string_translation_settings['strings_language']) { $data['langs'][$lang['code']] = join('/', array_map('sanitize_title_with_dashes', explode('/', $data['langs'][$lang['code']]))); $data['langs'][$lang['code']] = urldecode($data['langs'][$lang['code']]); icl_add_string_translation($string_id, $lang['code'], $data['langs'][$lang['code']], ICL_STRING_TRANSLATION_COMPLETE); } } icl_update_string_status($string_id); } } } } if (isset($iclsettings)) { $this->save_settings($iclsettings); } } echo '1|'; break; case 'copy_from_original': /* * apply filtering as to add further elements * filters will have to like as such * add_filter('wpml_copy_from_original_fields', 'my_copy_from_original_fields');
private function save_string($value, $allow_empty_value, $language, $context, $name) { if (($name || $value) && (!empty($value) && is_scalar($value) && trim($value) || $allow_empty_value)) { global $wpdb; $name = trim($name) ? $name : md5($value); $string = array('language' => $language, 'context' => $context, 'name' => $name, 'value' => $value, 'status' => ICL_TM_NOT_TRANSLATED); $wpdb->insert($wpdb->prefix . 'icl_strings', $string); $string_id = $wpdb->insert_id; icl_update_string_status($string_id); } else { $string_id = 0; } return $string_id; }
static function save_sync_options() { global $sitepress, $wpdb; $slug_settings = $sitepress->get_setting('posts_slug_translation'); if (isset($slug_settings['on']) && $slug_settings['on'] && !empty($_POST['translate_slugs'])) { foreach ($_POST['translate_slugs'] as $type => $data) { $slug_settings['types'][$type] = isset($data['on']) ? intval(!empty($data['on'])) : false; if (empty($slug_settings['types'][$type])) { continue; } $post_type_obj = get_post_type_object($type); $slug = trim($post_type_obj->rewrite['slug'], '/'); $string_id = $wpdb->get_var(self::get_sql_to_get_string_id($slug)); $string_id = empty($string_id) ? icl_register_string('WordPress', 'URL slug: ' . $slug, $slug) : $string_id; if ($string_id) { foreach ($sitepress->get_active_languages() as $lang) { $string_translation_settings = $sitepress->get_setting('st'); if ($lang['code'] != $string_translation_settings['strings_language']) { $data['langs'][$lang['code']] = join('/', array_map(array('WPML_Slug_Translation', 'sanitize'), explode('/', $data['langs'][$lang['code']]))); $data['langs'][$lang['code']] = urldecode($data['langs'][$lang['code']]); icl_add_string_translation($string_id, $lang['code'], $data['langs'][$lang['code']], ICL_TM_COMPLETE); } } icl_update_string_status($string_id); } } } $sitepress->set_setting('posts_slug_translation', $slug_settings, true); }
private function save_string($value, $allow_empty_value, $language, $domain, $context, $name) { if ($allow_empty_value || $value) { $this->wpdb->insert($this->wpdb->prefix . 'icl_strings', array('language' => $language, 'context' => $domain, 'gettext_context' => $context, 'domain_name_context_md5' => md5($domain . $name . $context), 'name' => $name, 'value' => $value, 'status' => ICL_TM_NOT_TRANSLATED)); $string_id = $this->wpdb->insert_id; if ($string_id === 0) { throw new Exception('Count not add String with arguments: value: ' . $value . ' allow_empty_value:' . $allow_empty_value . ' language: ' . $language); } icl_update_string_status($string_id); $key = md5($domain . $name . $context); $this->registered_string_cache[$domain][$key] = array('id' => $string_id, 'value' => $value); } else { $string_id = 0; } return $string_id; }
/** * @param string $language * @param string|null $value * @param int|bool|false $status * @param int|null $translator_id * @param string|int|null $translation_service * @param int|null $batch_id * * @return bool|int id of the translation */ public function set_translation($language, $value = null, $status = false, $translator_id = null, $translation_service = null, $batch_id = null) { /** @var $ICL_Pro_Translation WPML_Pro_Translation */ global $ICL_Pro_Translation; $res = $this->wpdb->get_row($this->wpdb->prepare("SELECT id, value, status\n " . $this->from_where_snippet(true) . " AND language=%s", $language)); if (isset($res->status) && $res->status == ICL_TM_WAITING_FOR_TRANSLATOR && is_null($value)) { return false; } $translation_data = array(); if ($translation_service) { $translation_data['translation_service'] = $translation_service; } if ($batch_id) { $translation_data['batch_id'] = $batch_id; } if (!is_null($value)) { $translation_data['value'] = $value; } if ($translator_id) { $translation_data['translator_id'] = $translator_id; } if ($res) { $st_id = $res->id; if ($status) { $translation_data['status'] = $status; } elseif ($status === ICL_TM_NOT_TRANSLATED) { $translation_data['status'] = ICL_TM_NOT_TRANSLATED; } if (!empty($translation_data)) { $st_update['translation_date'] = current_time("mysql"); $this->wpdb->update($this->wpdb->prefix . 'icl_string_translations', $translation_data, array('id' => $st_id)); } } else { $translation_data = array_merge($translation_data, array('string_id' => $this->string_id, 'language' => $language, 'status' => $status ? $status : ICL_TM_NOT_TRANSLATED)); $this->wpdb->insert($this->wpdb->prefix . 'icl_string_translations', $translation_data); $st_id = $this->wpdb->insert_id; } if ($ICL_Pro_Translation) { $ICL_Pro_Translation->_content_fix_links_to_translated_content($st_id, $language, 'string'); } icl_update_string_status($this->string_id); do_action('icl_st_add_string_translation', $st_id); return $st_id; }
private function save_string($value, $allow_empty_value, $language, $domain, $context, $name) { if (($name || $value) && (!empty($value) && is_scalar($value) && trim($value) || $allow_empty_value)) { $name = trim($name) ? $name : md5($value); $string = array('language' => $language, 'context' => $domain, 'gettext_context' => $context, 'domain_name_context_md5' => md5($domain . $name . $context), 'name' => $name, 'value' => $value, 'status' => ICL_TM_NOT_TRANSLATED); $this->wpdb->insert($this->wpdb->prefix . 'icl_strings', $string); $string_id = $this->wpdb->insert_id; icl_update_string_status($string_id); $key = md5($domain . $name . $context); $this->registered_string_cache[$domain][$key] = array('id' => $string_id, 'value' => $value); } else { $string_id = 0; } return $string_id; }
$nid = (int) $_POST['post_id']; $md5 = $wpdb->get_var("SELECT md5 FROM {$wpdb->prefix}icl_node WHERE nid={$nid}"); $wpdb->query("UPDATE {$wpdb->prefix}icl_content_status SET md5 = '{$md5}' WHERE nid='{$nid}'"); echo __('Needs update', 'sitepress'); echo '|'; echo __('Complete', 'sitepress'); break; case 'icl_st_save_translation': $icl_st_complete = isset($_POST['icl_st_translation_complete']) ? $_POST['icl_st_translation_complete'] : ICL_STRING_TRANSLATION_NOT_TRANSLATED; if (get_magic_quotes_gpc()) { $_POST = stripslashes_deep($_POST); } echo icl_add_string_translation($_POST['icl_st_string_id'], $_POST['icl_st_language'], stripslashes($_POST['icl_st_translation']), $icl_st_complete); echo '|'; global $icl_st_string_translation_statuses; echo $icl_st_string_translation_statuses[icl_update_string_status($_POST['icl_st_string_id'])]; break; case 'icl_st_delete_strings': $arr = explode(',', $_POST['value']); __icl_unregister_string_multi($arr); break; case 'icl_st_send_strings': $arr = explode(',', $_POST['strings']); icl_translation_send_strings($arr, explode('#', $_POST['languages'])); echo '1'; break; case 'icl_st_send_strings_all': icl_translation_send_untranslated_strings(explode(',', $_POST['languages'])); echo '1'; break; case 'icl_save_theme_localization_type':
function cancel_local_translation($id, $return_original_id = false) { global $wpdb; $string_id = $wpdb->get_var($wpdb->prepare("\tSELECT string_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM {$wpdb->prefix}icl_string_translations\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE id=%d AND status IN (%d, %d)", $id, ICL_TM_IN_PROGRESS, ICL_TM_WAITING_FOR_TRANSLATOR)); if ($string_id) { $wpdb->update($wpdb->prefix . 'icl_string_translations', array('status' => ICL_TM_NOT_TRANSLATED, 'translation_service' => null, 'translator_id' => null, 'batch_id' => null), array('id' => $id)); icl_update_string_status($string_id); $res = $return_original_id ? $string_id : $id; } else { $res = false; } return $res; }
function icl_add_string_translation($string_id, $language, $value = null, $status = false, $translator_id = null) { global $wpdb; $res = $wpdb->get_row("SELECT id, value, status FROM {$wpdb->prefix}icl_string_translations WHERE string_id='" . $wpdb->escape($string_id) . "' AND language='" . $wpdb->escape($language) . "'"); // the same string should not be sent two times to translation if (isset($res->status) && $res->status == ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR && is_null($value)) { return false; } if ($res) { $st_id = $res->id; $st_update = array(); if (!is_null($value) && $value != $res->value) { // null $value is for sending to translation. don't override existing. $st_update['value'] = $value; } if ($status) { $st_update['status'] = $status; } elseif ($status === ICL_STRING_TRANSLATION_NOT_TRANSLATED) { $st_update['status'] = ICL_STRING_TRANSLATION_NOT_TRANSLATED; } if (!empty($st_update)) { if (!is_null($translator_id)) { $st_update['translator_id'] = get_current_user_id(); } $st_update['translation_date'] = current_time("mysql"); $wpdb->update($wpdb->prefix . 'icl_string_translations', $st_update, array('id' => $st_id)); } } else { if (!$status) { $status = ICL_STRING_TRANSLATION_NOT_TRANSLATED; } $st = array('string_id' => $string_id, 'language' => $language, 'status' => $status); if (!is_null($value)) { $st['value'] = $value; } if (!is_null($translator_id)) { $st_update['translator_id'] = get_current_user_id(); } $wpdb->insert($wpdb->prefix . 'icl_string_translations', $st); $st_id = $wpdb->insert_id; } $GLOBALS['ICL_Pro_Translation']->_content_fix_links_to_translated_content($st_id, $language, 'string'); icl_update_string_status($string_id); do_action('icl_st_add_string_translation', $st_id); return $st_id; }
/** * Auto translate strings with given context * * @param $context * @param $languages * @param $template */ private function translate_strings($context, $languages, $template) { global $wpdb; //get all not translated strings (status <> 1) if (0 === strcmp($context, 'all_contexts')) { $strings = $wpdb->get_results("SELECT id, language, context, value FROM {$wpdb->prefix}icl_strings"); } else { $strings = $wpdb->get_results($wpdb->prepare("SELECT id, language, context, value FROM {$wpdb->prefix}icl_strings WHERE context=%s", $context)); } //for each string add information foreach ($strings as $v) { foreach ($languages as $lang) { icl_add_string_translation($v->id, $lang, wpml_ctt_prepare_string($template, $v->value, $lang), TRUE); icl_update_string_status($v->id); } } }
function icl_update_string_status_all() { global $wpdb; $res = $wpdb->get_col("SELECT id FROM {$wpdb->prefix}icl_strings"); foreach ($res as $id) { icl_update_string_status($id); } }
function icl_add_string_translation($string_id, $language, $value = null, $status = false, $translator_id = null, $translation_service = null, $batch_id = null) { global $wpdb, $sitepress; $current_user = $sitepress->get_current_user(); $res = $wpdb->get_row($wpdb->prepare("SELECT id, value, status\r\n FROM {$wpdb->prefix}icl_string_translations\r\n WHERE string_id=%d AND language=%s", $string_id, $language)); // the same string should not be sent two times to translation if (isset($res->status) && $res->status == ICL_TM_WAITING_FOR_TRANSLATOR && is_null($value)) { return false; } if ($res) { $st_id = $res->id; $st_update = array(); if (!is_null($value) && $value != $res->value) { // null $value is for sending to translation. don't override existing. $st_update['value'] = $value; } if ($status) { $st_update['status'] = $status; } elseif ($status === ICL_TM_NOT_TRANSLATED) { $st_update['status'] = ICL_TM_NOT_TRANSLATED; } if (!empty($st_update)) { if (!is_null($translator_id)) { $st_update['translator_id'] = $current_user->ID; } if ($translation_service) { $st_update['translation_service'] = $translation_service; } if ($batch_id) { $st_update['batch_id'] = $batch_id; } $st_update['translation_date'] = current_time("mysql"); $wpdb->update($wpdb->prefix . 'icl_string_translations', $st_update, array('id' => $st_id)); } } else { if (!$status) { $status = ICL_TM_NOT_TRANSLATED; } $st = array('string_id' => $string_id, 'language' => $language, 'status' => $status); if (!is_null($value)) { $st['value'] = $value; } if (is_null($translator_id)) { $st['translator_id'] = $current_user->ID; } else { $st['translator_id'] = $translator_id; } if ($translation_service) { $st['translation_service'] = $translation_service; } if ($batch_id) { $st['batch_id'] = $batch_id; } $wpdb->insert($wpdb->prefix . 'icl_string_translations', $st); $st_id = $wpdb->insert_id; } /** @var $ICL_Pro_Translation WPML_Pro_Translation */ global $ICL_Pro_Translation; if ($ICL_Pro_Translation) { $ICL_Pro_Translation->_content_fix_links_to_translated_content($st_id, $language, 'string'); } icl_update_string_status($string_id); do_action('icl_st_add_string_translation', $st_id); return $st_id; }
function cancel_local_translation() { global $wpdb; $id = $_POST['id']; $string_id = $wpdb->get_var($wpdb->prepare("SELECT string_id FROM {$wpdb->prefix}icl_string_translations WHERE id=%d", $id)); $wpdb->update($wpdb->prefix . 'icl_string_translations', array('status' => ICL_STRING_TRANSLATION_NOT_TRANSLATED), array('id' => $id)); icl_update_string_status($string_id); echo json_encode(array('string_id' => $string_id)); exit; }
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; }
function icl_add_string_translation($string_id, $language, $value, $status = false) { global $wpdb; $res = $wpdb->get_row("SELECT id, value, status FROM {$wpdb->prefix}icl_string_translations WHERE string_id='" . $wpdb->escape($string_id) . "' AND language='" . $wpdb->escape($language) . "'"); if ($res) { $st_id = $res->id; $st_update = array(); if ($value != $res->value) { $st_update['value'] = $value; } if ($status) { $st_update['status'] = $status; } elseif ($status === ICL_STRING_TRANSLATION_NOT_TRANSLATED) { $st_update['status'] = ICL_STRING_TRANSLATION_NOT_TRANSLATED; } if (!empty($st_update)) { $wpdb->update($wpdb->prefix . 'icl_string_translations', $st_update, array('id' => $st_id)); } } else { if (!$status) { $status = ICL_STRING_TRANSLATION_NOT_TRANSLATED; } $st = array('string_id' => $string_id, 'language' => $language, 'value' => $value, 'status' => $status); $wpdb->insert($wpdb->prefix . 'icl_string_translations', $st); $st_id = $wpdb->insert_id; } $GLOBALS['ICL_Pro_Translation']->_content_fix_links_to_translated_content($st_id, $language, 'string'); icl_update_string_status($string_id); do_action('icl_st_add_string_translation', $st_id); return $st_id; }