We have:
/home/fr/accueil
The function below, url_node(1) will return:
/home/fr/accueilfunction url_node($nid) { global $language; // get node tnid $result = db_query("select * from {node} where nid='" . $nid . "'"); while($data = db_fetch_object($result)) { $tnid = $data->tnid; } // get node with matching tnid and language $translated_nid = ''; $query = "select * from {node} where tnid='" . $tnid . "' and language='" . $language->language . "'"; $result = db_query($query); while($data = db_fetch_object($result)) { $translated_nid = $data->nid; } // if no node, use original nid if($translated_nid == '') { $translated_nid = $nid; } return url('node/' . $translated_nid); }
Drupal url() is not good enough.
url('node/1') will return
/home on an English page/fr/node/1 on a French page (incorrect)
url('node/2') will return
/node/2 on an English page (incorrect)/fr/accueil on a French page