You are here

function translation_node_prepare in Internationalization 5

Same name and namespace in other branches
  1. 5.3 translation/translation.module \translation_node_prepare()
  2. 5.2 translation/translation.module \translation_node_prepare()

Prepare node for translation

1 call to translation_node_prepare()
translation_nodeapi in translation/translation.module
Implementation of hook_nodeapi().

File

translation/translation.module, line 366

Code

function translation_node_prepare(&$node, $sourcenid, $language) {
  $node->translation_nid = $sourcenid;
  $node->language = $language;
  $source = $node->translation_source = node_load($node->translation_nid);

  // Taxonomy translation
  if (is_array($source->taxonomy)) {

    // Set translated taxonomy terms
    $node->taxonomy = array();
    foreach ($source->taxonomy as $tid => $term) {
      if ($term->language) {
        $translated_terms = translation_term_get_translations(array(
          'tid' => $tid,
        ));
        if ($translated_terms && ($newterm = $translated_terms[$node->language])) {
          $node->taxonomy[$newterm->tid] = $newterm;

          //drupal_set_message("DEBUG: Translated term $tid to ". $newterm->tid);
        }
      }
      else {

        // Term has no language. Should be ok
        $node->taxonomy[$tid] = $term;
      }
    }
  }

  // Book outlines, translating parent page if exists
  if ($source->parent && ($translations = translation_node_get_translations(array(
    'nid' => $source->parent,
  ))) && isset($translations[$language])) {
    $node->parent = $translations[$language]->nid;
  }

  // Translations are taken from source node
  $node->translation = $source->translation;
  $node->translation[$source->language] = $source;

  // Rest of fields. Unset some known ones not to be copied over
  unset($source->nid, $source->vid, $source->path, $source->language, $source->files);
  foreach ($source as $field => $value) {
    if (!isset($node->{$field})) {
      $node->{$field} = $value;
    }
  }
}