Custom Drupal functie: node_load_translation()

Drupal's core functie node_load() laadt een gegeven node maar doet dit zonder enige rekenschap van de context waarin de opdracht wordt gegeven, bijvoorbeeld de taal. Soms heb je -gegeven een NID- de bijbehorende node nodig maar dan wel in de taal die de huidige gebruiker heeft geselecteerd.

Daarvoor kan de onderstaande functie van pas komen, een variant van node_load(). De functie probeert de gewenste node te laden in de taal van de gebruiker. Lukt dit niet dan wordt de node met NID=$nid gereturned.

function node_load_translation($nid) {
  if(FALSE !== ($node = node_load($nid)) {
    if ($node->tnid > 0) {
      global $language;
      $translations = translation_node_get_translations($node->tnid);
      $tnids = array();
      foreach ($translations as $translation) {
        if ($translation->language == $language->language) {
          return node_load($translation->nid);
        }
      }
      return $node;
    }
  }
}